/*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.android.apis.view;

import android.app.Activity;
import android.os.Bundle;
import android.widget.RatingBar;
import android.widget.TextView;

import com.example.android.apis.R;

/**
 * Demonstrates how to use a rating bar
 */
public class RatingBar1 extends Activity implements
		RatingBar.OnRatingBarChangeListener {
	RatingBar mSmallRatingBar;
	RatingBar mIndicatorRatingBar;
	TextView mRatingText;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.ratingbar_1);

		mRatingText = (TextView) findViewById(R.id.rating);

		// We copy the most recently changed rating on to these indicator-only
		// rating bars
		mIndicatorRatingBar = (RatingBar) findViewById(R.id.indicator_ratingbar);
		mSmallRatingBar = (RatingBar) findViewById(R.id.small_ratingbar);

		// The different rating bars in the layout. Assign the listener to us.
		((RatingBar) findViewById(R.id.ratingbar1))
				.setOnRatingBarChangeListener(this);
		((RatingBar) findViewById(R.id.ratingbar2))
				.setOnRatingBarChangeListener(this);
	}

	public void onRatingChanged(RatingBar ratingBar, float rating,
			boolean fromTouch) {
		final int numStars = ratingBar.getNumStars();
		mRatingText.setText(getString(R.string.ratingbar_rating) + " " + rating
				+ "/" + numStars);

		// Since this rating bar is updated to reflect any of the other rating
		// bars, we should update it to the current values.
		if (mIndicatorRatingBar.getNumStars() != numStars) {
			mIndicatorRatingBar.setNumStars(numStars);
			mSmallRatingBar.setNumStars(numStars);
		}
		if (mIndicatorRatingBar.getRating() != rating) {
			mIndicatorRatingBar.setRating(rating);
			mSmallRatingBar.setRating(rating);
		}
		final float ratingBarStepSize = ratingBar.getStepSize();
		if (mIndicatorRatingBar.getStepSize() != ratingBarStepSize) {
			mIndicatorRatingBar.setStepSize(ratingBarStepSize);
			mSmallRatingBar.setStepSize(ratingBarStepSize);
		}
	}

}
